package cmd

import (
	"fmt"
	"strings"
	"time"

	"github.com/golang-module/carbon"
	"github.com/spf13/cobra"
)

// 修复数据的类型
var fixDataType string

func init() {
	rootCmd.PersistentFlags().StringVarP(&fixDataType, "type", "t", "", "fix db data")
	rootCmd.AddCommand(fixDBDataCmd)
}

// 支持的数据处理类型  类型名 => 处理函数
var FixDBDataFunc = map[string]func(arg []string){
	// "func_param": Func,
}

// 数据库数据临时修复脚本
var fixDBDataCmd = &cobra.Command{
	Use:   "fixdb",
	Short: "fixdb",
	Run: func(c *cobra.Command, arg []string) {
		startTime := time.Now()
		if _, ok := FixDBDataFunc[fixDataType]; ok {
			FixDBDataFunc[fixDataType](arg)
		} else {
			fmt.Println("未知的类型")
		}
		usedTime := time.Since(startTime)
		fmt.Println("输入参数arg:", "fixdb -t", fixDataType, strings.Join(arg, " "))
		fmt.Println("修复数据全程耗时:", usedTime)
	},
}

// 将传入的起止时间参数转换为时间戳
func HandleTimeArg(arg []string) (start, end int64) {
	if len(arg) != 2 {
		panic("请选择开始时间及结束时间!")
	}
	start = carbon.ParseByLayout(arg[0], carbon.DateLayout).Timestamp()
	end = carbon.ParseByLayout(arg[1], carbon.DateLayout).EndOfDay().Timestamp()
	return
}

// func Func(arg []string) {}
